<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
<script>

// 'use strict';
// 严格模式下，形参和arguments对象中的值不相互关联

/* var x = 1;
function fun(x){
    console.log( x );// 1
    console.log( arguments[0] );// 1
    x = 2;// 修改形参
    console.log( arguments[0] );// 2
    arguments[0] = 3;// 修改arguments对象下标为0的值
    console.log( x );// 3
    console.log( arguments[0] );// 3
    // 形参和arguments对象中的值是相互关联的
}
fun(x);// fun(1);
console.log( x );// 1 */


// 常见的错误类型：
// Error 基本错误

// TypeError 类型错误，值的类型发生错误时报出
// var abc = 123;
// abc();

// SyntaxError 语法错误，出现语法错误时报出
// var break = 123;
// console.log( break );

// ReferenceError 引用错误，访问不存在的变量时报出
// var x = 123;
// console.log( y );

// RangeError 范围错误，数值超出最大范围时报出
// function fn(n){
//     n++;
//     console.log( n );
//     fn(n);
// }
// fn(1);

/* // 创建错误对象，浏览器不会报错
// 抛出错误时，浏览器才能捕获到错误，然后报出错误
var err1 = new Error('出错了 1');
console.dir( err1 );// {错误对象}
// throw 用于抛出一个值或错误
// throw err1;// 抛出一个错误

var err2 = new TypeError('出错了 2');
throw err2;// 抛出一个错误 */


// 请详细说明 a.b 可能发生哪些情况？

</script>
</body>
</html>